﻿using System;
using System.Collections.ObjectModel;
using System.Windows;
using PairingMatrix.Common.Command;
using PairingMatrix.Common.Enum;
using PairingMatrix.Model;
using PairingMatrix.ViewModel;

namespace PairingMatrix.Design
{
    public class TeamMemberCardViewModel : ViewModelBase, ITeamMemberCardViewModel
    {
        public Guid Id
        {
            get { return Guid.Empty; }
        }

        public string Name
        {
            get { return "Souvik Basu"; }
            set
            {
                OnPropertyChanged("Name");
            }
        }

        public string PhotoUri
        {
            get { return "/PairingMatrix;component/View/Photo/SouvikBasu.jpg"; }
            set
            {
                OnPropertyChanged("Name");
            }
        }

        public Point Position { get; set; }

        public TeamMemberModel Model
        {
            get { throw new NotImplementedException(); }
        }

        public ObservableCollection<ViewModel.PairedWithViewModel> PairedWith
        {
            get
            {
                return null;
                //                return new ObservableCollection<ViewModel.PairedWithViewModel>
                //                         {
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 5 },
                //                             new PairedWithViewModel { Member = new TeamMemberCardViewModel(), NumberOfTimesPaired = 9 }
                //                         }; }
            }
        }

        public bool ArrangeCardToShowStatistics
        {
            get { return true; }
            set { throw new NotImplementedException(); }
        }

        public bool ShowStatistics
        {
            get { throw new NotImplementedException(); }
            set { throw new NotImplementedException(); }
        }

        public bool HasSignUpsOnCurrentWall
        {
            get { throw new NotImplementedException(); }
        }

        public WallType Wall
        {
            get { throw new NotImplementedException(); }
        }

        public int NumberOfSignUpsWithSelectedTeamMember
        {
            get { return 2; }
        }

        public PairingLevel PairingLevelWithSelectedTeamMember
        {
            get { return PairingLevel.AvoidPairing; }
        }

        public bool ShowNumberOfDaysPairedWithSelectedTeamMember
        {
            get { throw new NotImplementedException(); }
            set { throw new NotImplementedException(); }
        }

        public RelayCommand DeleteCommand
        {
            get { throw new NotImplementedException(); }
        }

        public bool ShowCardInAbsenteesBox
        {
            get { throw new NotImplementedException(); }
            set { throw new NotImplementedException(); }
        }

        public bool ArrangeCardToShowIceCreamMeter
        {
            get { return false; }
            set { throw new NotImplementedException(); }
        }

        public ObservableCollection<string> IceCreams
        {
            get { return new ObservableCollection<string>{"2/3"}; }
            set { throw new NotImplementedException(); }
        }

        public int IceCreamCost { get; private set; }
        public void CalculateIceCreamCost(double totalCostOfIceCreams, double totalCountOfIceCreams)
        {
            throw new NotImplementedException();
        }

        public void ClearIceCreams()
        {
            throw new NotImplementedException();
        }
    }
}
